<?php namespace web\admin\controller;


//分类管理控制器
class Category extends Common{
//    声明一个属性
    protected $db;
    public function __construct()
    {
//        为了不覆盖父级的方法
        parent::__construct();
        $this->db=new \system\model\Category;

    }
//    分类管理首页
    public function index(){
//        获得树状结构
//        Data::tree($data, $title, $fieldPri = 'cid', $fieldPid = 'pid');
        $data=Data::tree($this->db->get(),'cname');
//        var_dump($data);
//        View::with('data',$data)分配变量
        View::with('data',$data)->make();
    }
//    顶级分类管理的添加
        public function add(){
//            判断是不是post提交
            if(IS_POST){
//                如果添加成功
                if($this->db->store()){
                    message('添加成功','','success');
                }
//                如果添加失败提示错误信息
                message('添加失败','','error');
            }
//            加载模板
            View::make();
        }
    //子分类添加
    public function addSon(){
        $cid = q('get.cid',0,'intval');
        if(IS_POST)
        {
            if($this->db->store())
            {
                message('添加成功','','success');
            }
            //如果添加失败，提示错误信息
            message($this->db->getError(),'','error');
        }
        //获取所属分类（父级分类）
        //field,获取指定字段的数据
//                                查找数据库cid和get接收到cid  获取指定cid和cname俩字段
        $cateData = $this->db->where('cid',$cid)->field(['cid','cname'])->first();
        //p($cateData);
        View::with('cateData',$cateData)->make();
//        分配变量$cateData到 cateData页面
//        View::with('cateData',$cateData);
//        载入addSon模板
//        make();


    }
    //分类编辑
    public function edit()
    {
//        判断是否是post提交
        if(IS_POST)
        {
            if($this->db->edit())
            {
//                操作成功成功提示
                message('操作成功','','success');
            }
//            操作失败用getError()方法接收错误
            message($this->db->getError(),'','error');
        }
//        获取get cid 的参数不存在默认为0是强制转整
        $cid = q('get.cid',0,'intval');
        //获取旧数据
//        获取get的$cid和数据库cid一条数据
        $oldData = $this->db->where('cid',$cid)->first();
        //p($oldData);
        //处理所属分类getCateData()是模型中的方法来完成
        $cateData = $this->db->getCateData($cid);
//        p($cateData);
        View::with('oldData',$oldData)->with('cateData',$cateData)->make();
    }
    //删除分类
    public function del()
    {
        $cid = q('get.cid',0,'intval');
        //把子集提一级（上位）
        //获取当前cid所对应的pid
        //pluck获取单一字段
        $pid = $this->db->where('cid',$cid)->pluck('pid');
        $this->db->where('pid',$cid)->update(['pid'=>$pid]);
        //把当前cid这条数据删除
        $this->db->where('cid',$cid)->delete();
        message('删除成功',u('index'),'success');
    }

}
